package com.xinchao.service;

import com.xinchao.exception.ServiceException;
import com.xinchao.model.dto.CityDeviceSumDTO;
import com.xinchao.model.dto.CityRegionDeviceSumDTO;
import com.xinchao.model.dto.DeviceExposuresSumDTO;
import com.xinchao.model.dto.DeviceWatchSumDTO;
import com.xinchao.model.vo.DeviceAvgWatchSumVO;

import java.text.ParseException;
import java.util.List;

/**
 * @author dxy
 * @date 2018/11/12 13:19
 */
public interface AdvertisementMonitorPointService {

	/**
	 * 获取广告的终端曝光次数列表
	 *
	 * @param advertisementName 广告名称
	 * @param timeType          时间类型
	 * @return List<DeviceExposuresSumDTO>
	 * @throws ServiceException
	 * @throws ParseException
	 */
	List<DeviceExposuresSumDTO> listDeviceExposuresSumDTO(String advertisementName, Integer timeType) throws ServiceException, ParseException;

	/**
	 * 获取广告的终端观看人次列表
	 *
	 * @param advertisementName 广告名称
	 * @param timeType          时间类型
	 * @return List<DeviceWatchSumDTO>
	 * @throws ServiceException
	 * @throws ParseException
	 */
	List<DeviceWatchSumDTO> listDeviceWatchSumDTO(String advertisementName, Integer timeType) throws ServiceException, ParseException;

	/**
	 * 获取广告的终端平均观看时长列表
	 *
	 * @param advertisementName 广告名称
	 * @param timeType          时间类型
	 * @return List<DeviceAvgWatchSumVO>
	 * @throws ServiceException
	 * @throws ParseException
	 */
	List<DeviceAvgWatchSumVO> listDeviceAvgWatchSumDTO(String advertisementName, Integer timeType) throws ServiceException, ParseException;

	/**
	 * 获取广告的城市终端数量列表
	 *
	 * @param advertisementName 广告名称
	 * @return PageInfo<CityDeviceSumDTO>
	 * @throws ServiceException
	 */
	List<CityDeviceSumDTO> listCityDeviceSum(String advertisementName) throws ServiceException;

	/**
	 * 获取广告的城市区县终端数量列表
	 *
	 * @param advertisementName 广告名称
	 * @return PageInfo<CityRegionDeviceSumDTO>
	 * @throws ServiceException
	 */
	List<CityRegionDeviceSumDTO> listCityRegionDeviceSum(String advertisementName) throws ServiceException;
}
